package com.partterns.reflect;


import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class ReflectTest {
    public static void main(String[] args){
        ReflectTest reflectTest=new ReflectTest();
        reflectTest.reflect();
    }

    /**
     * 反射生成对象和反射调度方法
     * invoke方法主要是为了类反射，这样你可以在不知道具体的类的情况下，根据配置的字符串去调用一个类的方法。在灵活编程的时候非常有用。
     */
    public Object reflect(){
        ReflectServiceImpl object=null;
        try {
            object=(ReflectServiceImpl)Class.forName("com.partterns.reflect.ReflectServiceImpl").newInstance();
            Method method = object.getClass().getMethod("sayHello",String.class);
            method.invoke(object,"张三");
        } catch (InstantiationException|IllegalAccessException|ClassNotFoundException
                |NoSuchMethodException|InvocationTargetException e) {
            e.printStackTrace();
        }
        return object;
    }

}
